Date: 2024-08-24

There are totally 3090 testing records in the analysis dataset.

Figure 1. Look at distribution of testing by time


Figure 2. Let’s look at the distribution of immunization date, and see why coverage is so low?

combine the above two plots in one figure


Look at the risk factors

Table 1 Each risk factor


Table 2 At least one risk factor


Table 3. Characteristic of study population (testing level)

  • this is assuming that: if mAb was taken before collection date, we count it as immunized. For SSA, need to change it to: if the person took mAb more than X days before sample collection, we count it as immunized.
  • we look at different pairs of case and control here (mainly to see which ones should be confounders).

RSV+ vs. RSV-

Characteristic

Overall, N = 3,0901

Cases, N = 6801

Controls, N = 2,4101

p-value2

Sex

0.498

Female

1,317 (42.6%)

279 (41.0%)

1,038 (43.1%)

Male

1,772 (57.3%)

401 (59.0%)

1,371 (56.9%)

(Missing)

1 (0.0%)

0 (0.0%)

1 (0.0%)

Age at testing (months)

0.007

Mean (SD)

6.9 (4.0)

6.5 (3.7)

7.0 (4.1)

Median (IQR)

6.7 (3.6, 9.7)

6.1 (3.4, 9.2)

6.9 (3.7, 9.9)

N missing (% missing)

0.0 (0.0%)

0.0 (0.0%)

0.0 (0.0%)

Age at testing

0.016

under 3m

620 (20.1%)

143 (21.0%)

477 (19.8%)

3-6m

739 (23.9%)

186 (27.4%)

553 (22.9%)

6-9m

787 (25.5%)

169 (24.9%)

618 (25.6%)

9-12m

569 (18.4%)

121 (17.8%)

448 (18.6%)

above 1 yo

375 (12.1%)

61 (9.0%)

314 (13.0%)

Time tested

<0.001

Oct-Nov

814 (26.3%)

307 (45.1%)

507 (21.0%)

Dec-Jan

1,246 (40.3%)

333 (49.0%)

913 (37.9%)

Feb-Mar

781 (25.3%)

35 (5.1%)

746 (31.0%)

April and after

249 (8.1%)

5 (0.7%)

244 (10.1%)

Race and ethnicity

0.086

Hispanic

1,328 (43.0%)

280 (41.2%)

1,048 (43.5%)

White non-Hispanic

820 (26.5%)

201 (29.6%)

619 (25.7%)

Black non-Hispanic

533 (17.2%)

112 (16.5%)

421 (17.5%)

Other non-Hispanic3

161 (5.2%)

26 (3.8%)

135 (5.6%)

unknown

248 (8.0%)

61 (9.0%)

187 (7.8%)

Birth weight

0.067

Mean (SD)

3,131.7 (687.3)

3,182.1 (626.4)

3,117.8 (702.5)

Median (IQR)

3,214.3 (2,824.9, 3,563.8)

3,265.0 (2,875.0, 3,576.2)

3,194.5 (2,805.1, 3,553.6)

N missing (% missing)

783.0 (25.3%)

184.0 (27.1%)

599.0 (24.9%)

Missing

783.0

184.0

599.0

Gestational age

0.045

37 weeks or more

1,915 (62.0%)

419 (61.6%)

1,496 (62.1%)

Less than 37 weeks

418 (13.5%)

76 (11.2%)

342 (14.2%)

(Missing)

757 (24.5%)

185 (27.2%)

572 (23.7%)

Pulmonary diseases

156 (5.0%)

26 (3.8%)

130 (5.4%)

0.099

Cardiac diseases

152 (4.9%)

30 (4.4%)

122 (5.1%)

0.489

Anemia

94 (3.0%)

15 (2.2%)

79 (3.3%)

0.151

Having at least one risk factor4

750 (24.3%)

150 (22.1%)

600 (24.9%)

0.127

Insurance type

0.092

private

983 (31.8%)

231 (34.0%)

752 (31.2%)

public

2,088 (67.6%)

442 (65.0%)

1,646 (68.3%)

uninsured

19 (0.6%)

7 (1.0%)

12 (0.5%)

mAb status

<0.001

No

2,760 (89.3%)

659 (96.9%)

2,101 (87.2%)

Yes, 100mg dose

95 (3.1%)

6 (0.9%)

89 (3.7%)

Yes, 50mg dose

235 (7.6%)

15 (2.2%)

220 (9.1%)

1n (%)

2Fisher's exact test; Wilcoxon rank sum test; Pearson's Chi-squared test

3Inclusing Asian, Pacific Islander, Middle Eastern or Northern American, American Indian or Native American by self-reporting.

4Have at least one of the following conditions recorded in the infant's medical history or diagnosis records: 1) Anemia; 2) Immunodeficiency (e.g. transplantation history, leukemia, etc.); 3) Cardiac diseases (including congenital heart diseases diagnosed at birth or any reporting of heart conditions); 4) Pulmonary diseases; 5) Down syndrome; 6) Small for gestational age (birth weight < 2,500 grams); 7) Prematurity (gestational age less than 37 weeks).


Clinical outcomes

Table 4.

Here we filtered out only the cases (RSV+) and compare between vaccinated and unvaccinated.

Characteristic

Overall, N = 6801

Unvaccinated, N = 6591

Vaccinated, N = 211

Hospital admission

166 (24.4%)

161 (24.4%)

5 (23.8%)

Duration of hospitalization (days)

Median (IQR)

1.0 (1.0, 2.0)

1.0 (1.0, 2.0)

3.0 (2.0, 3.0)

N missing (% missing)

514.0 (75.6%)

498.0 (75.6%)

16.0 (76.2%)

Missing

514.0

498.0

16.0

ICU admission

23 (3.4%)

22 (3.3%)

1 (4.8%)

Duration of ICU admission (days)

Median (IQR)

3.1 (1.8, 7.3)

3.5 (1.8, 7.4)

2.4 (2.4, 2.4)

N missing (% missing)

657.0 (96.6%)

637.0 (96.7%)

20.0 (95.2%)

Missing

657.0

637.0

20.0

Required highflow oxygen support

145 (21.3%)

141 (21.4%)

4 (19.0%)

Distress in URT

229 (33.7%)

221 (33.5%)

8 (38.1%)

Distress in LRT

361 (53.1%)

350 (53.1%)

11 (52.4%)

Fever (> 38°C/100.4°F)

239 (35.1%)

235 (35.7%)

4 (19.0%)

Cough

98 (14.4%)

94 (14.3%)

4 (19.0%)

Wheezing

9 (1.3%)

9 (1.4%)

0 (0.0%)

Breathing difficulties

3 (0.4%)

3 (0.5%)

0 (0.0%)

Bronchiolitis

349 (51.3%)

338 (51.3%)

11 (52.4%)

Sepsis

2 (0.3%)

2 (0.3%)

0 (0.0%)

1n (%)


compare between immunized vs. unimmunized

RSV+ vs. RSV-

Characteristic

Overall, N = 3,0901

Immunized, N = 3301

Unimmunized, N = 2,7601

p-value2

positive_rsv

<0.001

Cases

680 (22.0%)

21 (6.4%)

659 (23.9%)

Controls

2,410 (78.0%)

309 (93.6%)

2,101 (76.1%)

Sex

0.793

Female

1,317 (42.6%)

138 (41.8%)

1,179 (42.7%)

Male

1,772 (57.3%)

192 (58.2%)

1,580 (57.2%)

(Missing)

1 (0.0%)

0 (0.0%)

1 (0.0%)

Age at testing (months)

<0.001

Mean (SD)

6.9 (4.0)

4.2 (3.1)

7.2 (4.0)

Median (IQR)

6.7 (3.6, 9.7)

3.4 (1.8, 6.0)

7.1 (4.1, 10.0)

N missing (% missing)

0.0 (0.0%)

0.0 (0.0%)

0.0 (0.0%)

Age at testing

<0.001

under 3m

620 (20.1%)

142 (43.0%)

478 (17.3%)

3-6m

739 (23.9%)

105 (31.8%)

634 (23.0%)

6-9m

787 (25.5%)

57 (17.3%)

730 (26.4%)

9-12m

569 (18.4%)

19 (5.8%)

550 (19.9%)

above 1 yo

375 (12.1%)

7 (2.1%)

368 (13.3%)

Time tested

<0.001

Oct-Nov

814 (26.3%)

24 (7.3%)

790 (28.6%)

Dec-Jan

1,246 (40.3%)

121 (36.7%)

1,125 (40.8%)

Feb-Mar

781 (25.3%)

139 (42.1%)

642 (23.3%)

April and after

249 (8.1%)

46 (13.9%)

203 (7.4%)

Race and ethnicity

<0.001

Hispanic

1,328 (43.0%)

138 (41.8%)

1,190 (43.1%)

White non-Hispanic

820 (26.5%)

68 (20.6%)

752 (27.2%)

Black non-Hispanic

533 (17.2%)

86 (26.1%)

447 (16.2%)

Other non-Hispanic3

161 (5.2%)

24 (7.3%)

137 (5.0%)

unknown

248 (8.0%)

14 (4.2%)

234 (8.5%)

Birth weight

<0.001

Mean (SD)

3,131.7 (687.3)

2,938.8 (833.5)

3,160.9 (657.6)

Median (IQR)

3,214.3 (2,824.9, 3,563.8)

3,099.6 (2,575.6, 3,483.7)

3,234.4 (2,875.0, 3,573.7)

N missing (% missing)

783.0 (25.3%)

26.0 (7.9%)

757.0 (27.4%)

Missing

783.0

26.0

757.0

Gestational age

<0.001

37 weeks or more

1,915 (62.0%)

218 (66.1%)

1,697 (61.5%)

Less than 37 weeks

418 (13.5%)

90 (27.3%)

328 (11.9%)

(Missing)

757 (24.5%)

22 (6.7%)

735 (26.6%)

Pulmonary diseases

156 (5.0%)

19 (5.8%)

137 (5.0%)

0.534

Cardiac diseases

152 (4.9%)

33 (10.0%)

119 (4.3%)

<0.001

Anemia

94 (3.0%)

11 (3.3%)

83 (3.0%)

0.744

Having at least one risk factor4

750 (24.3%)

123 (37.3%)

627 (22.7%)

<0.001

Insurance type

<0.001

private

983 (31.8%)

78 (23.6%)

905 (32.8%)

public

2,088 (67.6%)

252 (76.4%)

1,836 (66.5%)

uninsured

19 (0.6%)

0 (0.0%)

19 (0.7%)

rsv_mab

<0.001

No

2,760 (89.3%)

0 (0.0%)

2,760 (100.0%)

Yes, 100mg dose

95 (3.1%)

95 (28.8%)

0 (0.0%)

Yes, 50mg dose

235 (7.6%)

235 (71.2%)

0 (0.0%)

1n (%)

2Pearson's Chi-squared test; Fisher's exact test; Wilcoxon rank sum test

3Inclusing Asian, Pacific Islander, Middle Eastern or Northern American, American Indian or Native American by self-reporting.

4Have at least one of the following conditions recorded in the infant's medical history or diagnosis records: 1) Anemia; 2) Immunodeficiency (e.g. transplantation history, leukemia, etc.); 3) Cardiac diseases (including congenital heart diseases diagnosed at birth or any reporting of heart conditions); 4) Pulmonary diseases; 5) Down syndrome; 6) Small for gestational age (birth weight < 2,500 grams); 7) Prematurity (gestational age less than 37 weeks).

From table1, there are four variables that are significantly different between the case and control (p < 0.05): age tested, month tested, premature (gestage < 37wk), birth weight. But because this is collinearity between prematurity and birth weight, only included one into the model. Because there is less missing in prematurity variable, thus included this instead of birth weight.

## quartz_off_screen 
##                 2
## quartz_off_screen 
##                 2
## quartz_off_screen 
##                 2


Selection of confounders included in the adjusted model

Using stepwise (both directions) to select the model using AIC

RSV infection

temp <- df 

all_confounders <- c(
  "age_at_test_in_months_cat_2", # 3-month interval
  "month_when_tested_cat",
  "race_ethnicity",
  #"risk_factor_gestagelessthan37wks",
  "risk_factor_atleastone",
  "insurance_type"
)
 
formula <- as.formula(paste(c("positive_rsv ~ rsv_mab", all_confounders), collapse = " + ")) 
full.model <- glm(formula, data = temp, family = "binomial")
step.model <- stepAIC(full.model, 
                      scope = list(lower = ~ rsv_mab + age_at_test_in_months_cat_2 + month_when_tested_cat,
                                   upper = formula),
                      direction = "backward", trace = FALSE)
confounders_infection <- c(
  "age_at_test_in_months_cat_2", # 3-month interval
  "month_when_tested_cat"
)
step.model$anova
## Stepwise Model Path 
## Analysis of Deviance Table
## 
## Initial Model:
## positive_rsv ~ rsv_mab + age_at_test_in_months_cat_2 + month_when_tested_cat + 
##     race_ethnicity + risk_factor_atleastone + insurance_type
## 
## Final Model:
## positive_rsv ~ rsv_mab + age_at_test_in_months_cat_2 + month_when_tested_cat
## 
## 
##                       Step Df  Deviance Resid. Df Resid. Dev      AIC
## 1                                            3074   2821.033 2853.033
## 2         - race_ethnicity  4 3.9353263      3078   2824.968 2848.968
## 3         - insurance_type  2 1.8446735      3080   2826.813 2846.813
## 4 - risk_factor_atleastone  1 0.2421708      3081   2827.055 2845.055
aic.infection <- as.data.frame(step.model$anova) %>% dplyr::select(Step, AIC) %>% 
  mutate(endpoint = "Medically attended RSV infection") %>% 
  mutate(Step = ifelse(Step == "", str_replace(as.character(formula[3]), "rsv_mab \\+ ", ""), Step)) %>% 
  rename(Confounders = Step)

ED visit as outcome

temp <- df %>% filter(encounter_type == "outpatient")
full.model <- glm(formula, data = temp, family = "binomial")
step.model <- stepAIC(full.model, 
                      scope = list(lower = ~ rsv_mab + age_at_test_in_months_cat_2 + month_when_tested_cat,
                                   upper = formula),
                      direction = "backward", trace = FALSE)
confounders_ed <- c(
  "age_at_test_in_months_cat_2", # 3-month interval
  "month_when_tested_cat"
)
step.model$anova
## Stepwise Model Path 
## Analysis of Deviance Table
## 
## Initial Model:
## positive_rsv ~ rsv_mab + age_at_test_in_months_cat_2 + month_when_tested_cat + 
##     race_ethnicity + risk_factor_atleastone + insurance_type
## 
## Final Model:
## positive_rsv ~ rsv_mab + age_at_test_in_months_cat_2 + month_when_tested_cat
## 
## 
##                       Step Df Deviance Resid. Df Resid. Dev      AIC
## 1                                           2489   2209.986 2241.986
## 2         - race_ethnicity  4 4.099769      2493   2214.086 2238.086
## 3         - insurance_type  2 2.227762      2495   2216.313 2236.313
## 4 - risk_factor_atleastone  1 1.303477      2496   2217.617 2235.617
aic.ed <- as.data.frame(step.model$anova) %>% dplyr::select(Step, AIC) %>% 
  mutate(endpoint = "RSV-associated outpatient visit") %>% 
  mutate(Step = ifelse(Step == "", str_replace(as.character(formula[3]), "rsv_mab \\+ ", ""), Step)) %>% 
  rename(Confounders = Step)

inpatient as outcome

temp <- df %>% filter(encounter_type == "inpatient")
full.model <- glm(formula, data = temp, family = "binomial")
step.model <- stepAIC(full.model, 
                      scope = list(lower = ~ rsv_mab + age_at_test_in_months_cat_2 + month_when_tested_cat,
                                   upper = formula),
                      direction = "backward", trace = FALSE)
confounders_inpatient <- c(
  "age_at_test_in_months_cat_2", # 3-month interval
  "month_when_tested_cat",
  "risk_factor_atleastone"
)
step.model$anova
## Stepwise Model Path 
## Analysis of Deviance Table
## 
## Initial Model:
## positive_rsv ~ rsv_mab + age_at_test_in_months_cat_2 + month_when_tested_cat + 
##     race_ethnicity + risk_factor_atleastone + insurance_type
## 
## Final Model:
## positive_rsv ~ rsv_mab + age_at_test_in_months_cat_2 + month_when_tested_cat + 
##     risk_factor_atleastone
## 
## 
##               Step Df  Deviance Resid. Df Resid. Dev      AIC
## 1                                     528   525.1960 555.1960
## 2 - race_ethnicity  4 4.9228875       532   530.1189 552.1189
## 3 - insurance_type  1 0.2574532       533   530.3764 550.3764
aic.inpatient <- as.data.frame(step.model$anova) %>% dplyr::select(Step, AIC) %>% 
  mutate(endpoint = "RSV-associated hospitalization") %>% 
  mutate(Step = ifelse(Step == "", str_replace(as.character(formula[3]), "rsv_mab \\+ ", ""), Step)) %>% 
  rename(Confounders = Step)

severe presentations as outcome

temp <- df %>% filter(icu_admitted == "yes" | highflow_oxygen == 1)
full.model <- glm(formula, data = temp, family = "binomial")
step.model <- stepAIC(full.model, 
                      scope = list(lower = ~ rsv_mab + age_at_test_in_months_cat_2 + month_when_tested_cat,
                                   upper = formula),
                      direction = "backward", trace = FALSE)
confounders_severe <- c(
  "age_at_test_in_months_cat_2", # 3-month interval
  "month_when_tested_cat",
  "risk_factor_atleastone"
)
step.model$anova
## Stepwise Model Path 
## Analysis of Deviance Table
## 
## Initial Model:
## positive_rsv ~ rsv_mab + age_at_test_in_months_cat_2 + month_when_tested_cat + 
##     race_ethnicity + risk_factor_atleastone + insurance_type
## 
## Final Model:
## positive_rsv ~ rsv_mab + age_at_test_in_months_cat_2 + month_when_tested_cat + 
##     risk_factor_atleastone
## 
## 
##               Step Df Deviance Resid. Df Resid. Dev      AIC
## 1                                    420   395.3552 425.3552
## 2 - race_ethnicity  4 2.127287       424   397.4825 419.4825
## 3 - insurance_type  1 1.530426       425   399.0129 419.0129
aic.severe <- as.data.frame(step.model$anova) %>% dplyr::select(Step, AIC) %>% 
  mutate(endpoint = "RSV-associated severe outcomes") %>% 
  mutate(Step = ifelse(Step == "", str_replace(as.character(formula[3]), "rsv_mab \\+ ", ""), Step)) %>% 
  rename(Confounders = Step)

LRTI

temp <- df %>% filter(symp_LRT_distress == 1)
full.model <- glm(formula, data = temp, family = "binomial")
step.model <- stepAIC(full.model, 
                      scope = list(lower = ~ rsv_mab + age_at_test_in_months_cat_2 + month_when_tested_cat,
                                   upper = formula),
                      direction = "backward", trace = FALSE)
confounders_LRTI <- c(
  "age_at_test_in_months_cat_2", # 3-month interval
  "month_when_tested_cat",
  "risk_factor_atleastone"
)
step.model$anova
## Stepwise Model Path 
## Analysis of Deviance Table
## 
## Initial Model:
## positive_rsv ~ rsv_mab + age_at_test_in_months_cat_2 + month_when_tested_cat + 
##     race_ethnicity + risk_factor_atleastone + insurance_type
## 
## Final Model:
## positive_rsv ~ rsv_mab + age_at_test_in_months_cat_2 + month_when_tested_cat + 
##     risk_factor_atleastone
## 
## 
##               Step Df Deviance Resid. Df Resid. Dev      AIC
## 1                                    727   804.7157 836.7157
## 2 - race_ethnicity  4 2.009427       731   806.7251 830.7251
## 3 - insurance_type  2 2.671050       733   809.3961 829.3961
aic.LRTI <- as.data.frame(step.model$anova) %>% dplyr::select(Step, AIC) %>% 
  mutate(endpoint = "RSV-associated LRTI") %>% 
  mutate(Step = ifelse(Step == "", str_replace(as.character(formula[3]), "rsv_mab \\+ ", ""), Step)) %>% 
  rename(Confounders = Step)

LRTI hospitalizations

temp <- df %>% filter(symp_LRT_distress == 1 & encounter_type == "inpatient")
full.model <- glm(formula, data = temp, family = "binomial")
step.model <- stepAIC(full.model, 
                      scope = list(lower = ~ rsv_mab + age_at_test_in_months_cat_2 + month_when_tested_cat,
                                   upper = formula),
                      direction = "backward", trace = FALSE)
confounders_LRTIhosp <- c(
  "age_at_test_in_months_cat_2", # 3-month interval
  "month_when_tested_cat",
  "risk_factor_atleastone"
)
step.model$anova
## Stepwise Model Path 
## Analysis of Deviance Table
## 
## Initial Model:
## positive_rsv ~ rsv_mab + age_at_test_in_months_cat_2 + month_when_tested_cat + 
##     race_ethnicity + risk_factor_atleastone + insurance_type
## 
## Final Model:
## positive_rsv ~ rsv_mab + age_at_test_in_months_cat_2 + month_when_tested_cat + 
##     risk_factor_atleastone
## 
## 
##               Step Df Deviance Resid. Df Resid. Dev      AIC
## 1                                    275   267.6900 297.6900
## 2 - race_ethnicity  4 4.245335       279   271.9354 293.9354
## 3 - insurance_type  1 1.056593       280   272.9920 292.9920
aic.LRTIhosp <- as.data.frame(step.model$anova) %>% dplyr::select(Step, AIC) %>% 
  mutate(endpoint = "RSV-associated LRTI hospitalization") %>% 
  mutate(Step = ifelse(Step == "", str_replace(as.character(formula[3]), "rsv_mab \\+ ", ""), Step)) %>% 
  rename(Confounders = Step)

save the AIC comparison in the backward selection process for each outcome

endpoint

Confounders

AIC

Medically attended RSV infection

age_tested + month_tested + race_ethnicity + atleastone_risk_factor + insurance_type

2,853.0

- race_ethnicity

2,849.0

- insurance_type

2,846.8

- atleastone_risk_factor

2,845.1

RSV-associated outpatient visit

age_tested + month_tested + race_ethnicity + atleastone_risk_factor + insurance_type

2,242.0

- race_ethnicity

2,238.1

- insurance_type

2,236.3

- atleastone_risk_factor

2,235.6

RSV-associated hospitalization

age_tested + month_tested + race_ethnicity + atleastone_risk_factor + insurance_type

555.2

- race_ethnicity

552.1

- insurance_type

550.4

RSV-associated severe outcomes

age_tested + month_tested + race_ethnicity + atleastone_risk_factor + insurance_type

425.4

- race_ethnicity

419.5

- insurance_type

419.0

RSV-associated LRTI

age_tested + month_tested + race_ethnicity + atleastone_risk_factor + insurance_type

836.7

- race_ethnicity

830.7

- insurance_type

829.4

RSV-associated LRTI hospitalization

age_tested + month_tested + race_ethnicity + atleastone_risk_factor + insurance_type

297.7

- race_ethnicity

293.9

- insurance_type

293.0


Table 6. Effectiveness of Nirsevimab

Here, I pooled all the cases and controls together, to estimate the VE for different pairs of case and control definitions.
  • Columns n_overall, n_cases, n_controls are numbers of individuals were sample size used in the analysis.
    • The sample size outside the parenthesis is the sample size that contributes to estimates of unadjusted effectiveness in the logistic regression models.
    • The sample size inside the parenthesis is the sample size that effectively contributes to estimates of adjusted effectiveness in the logistic regression models.
    • look at nirsevimab’s effectiveness against:
      • RSV infection
      • RSV-associated ED visit (outpatient)
      • RSV-associated hospitalizations
      • RSV-associated LRTI
      • RSV-associated LRTI hospitalizations
      • RSV-associated ICU admissions
      • RSV-associated severe disease

Table 6.

Figure 3. (2 rows for each outcome)



Read in the literature data and compare with our current estimates

all outcomes (unstratifieds)

main outcomes

all-cause LRTI (stratified)

Main outcomes with stratified all-cause VE

all outcomes (all-cause LRTI stratified)


Earlier records

Look at when restricting to records up to March, if the results are the same as what was reported in the ACIP meeting by CDC.



Look at whether dosage has an influence on VE.

Table 8 Compare infants who took 100mg and 50mg dosage

Characteristic

Overall, N = 3301

100mg, N = 951

50mg, N = 2351

p-value2

Sex

0.176

Female

138 (41.8%)

34 (35.8%)

104 (44.3%)

Male

192 (58.2%)

61 (64.2%)

131 (55.7%)

(Missing)

0 (0.0%)

0 (0.0%)

0 (0.0%)

Age at testing (months)

<0.001

Mean (SD)

4.2 (3.1)

7.5 (2.7)

2.9 (2.0)

Median (IQR)

3.4 (1.8, 6.0)

7.3 (5.6, 8.9)

2.4 (1.5, 3.8)

N missing (% missing)

0.0 (0.0%)

0.0 (0.0%)

0.0 (0.0%)

Age at testing

<0.001

under 3m

142 (43.0%)

2 (2.1%)

140 (59.6%)

3-6m

105 (31.8%)

28 (29.5%)

77 (32.8%)

6-9m

57 (17.3%)

42 (44.2%)

15 (6.4%)

9-12m

19 (5.8%)

17 (17.9%)

2 (0.9%)

above 1 yo

7 (2.1%)

6 (6.3%)

1 (0.4%)

Time tested

0.010

Oct-Nov

24 (7.3%)

14 (14.7%)

10 (4.3%)

Dec-Jan

121 (36.7%)

34 (35.8%)

87 (37.0%)

Feb-Mar

139 (42.1%)

36 (37.9%)

103 (43.8%)

April and after

46 (13.9%)

11 (11.6%)

35 (14.9%)

Race and ethnicity

0.004

Hispanic

138 (41.8%)

34 (35.8%)

104 (44.3%)

White non-Hispanic

68 (20.6%)

15 (15.8%)

53 (22.6%)

Black non-Hispanic

86 (26.1%)

26 (27.4%)

60 (25.5%)

Other non-Hispanic3

24 (7.3%)

15 (15.8%)

9 (3.8%)

unknown

14 (4.2%)

5 (5.3%)

9 (3.8%)

Birth weight

0.875

Mean (SD)

2,938.8 (833.5)

2,893.7 (1,018.0)

2,957.5 (745.9)

Median (IQR)

3,099.6 (2,575.6, 3,483.7)

3,114.4 (2,545.6, 3,503.8)

3,064.6 (2,580.5, 3,443.8)

N missing (% missing)

26.0 (7.9%)

6.0 (6.3%)

20.0 (8.5%)

Missing

26.0

6.0

20.0

Gestational age

0.061

37 weeks or more

218 (66.1%)

62 (65.3%)

156 (66.4%)

Less than 37 weeks

90 (27.3%)

31 (32.6%)

59 (25.1%)

(Missing)

22 (6.7%)

2 (2.1%)

20 (8.5%)

Pulmonary diseases

19 (5.8%)

11 (11.6%)

8 (3.4%)

0.004

Cardiac diseases

33 (10.0%)

7 (7.4%)

26 (11.1%)

0.311

Anemia

11 (3.3%)

6 (6.3%)

5 (2.1%)

0.084

Having at least one risk factor4

123 (37.3%)

40 (42.1%)

83 (35.3%)

0.248

Insurance type

0.775

private

78 (23.6%)

21 (22.1%)

57 (24.3%)

public

252 (76.4%)

74 (77.9%)

178 (75.7%)

uninsured

0 (0.0%)

0 (0.0%)

0 (0.0%)

1n (%)

2Fisher's exact test; Wilcoxon rank sum test; Pearson's Chi-squared test

3Inclusing Asian, Pacific Islander, Middle Eastern or Northern American, American Indian or Native American by self-reporting.

4Have at least one of the following conditions recorded in the infant's medical history or diagnosis records: 1) Anemia; 2) Immunodeficiency (e.g. transplantation history, leukemia, etc.); 3) Cardiac diseases (including congenital heart diseases diagnosed at birth or any reporting of heart conditions); 4) Pulmonary diseases; 5) Down syndrome; 6) Small for gestational age (birth weight < 2,500 grams); 7) Prematurity (gestational age less than 37 weeks).

Table 9 VE by dosage (100mg vs. not vaccinated)

Table 10 VE by dosage (50mg vs. not vaccinated)

Table 11. Compare VE from 50mg and 100mg dosage


Combine plot of any dose, 100mg, 50mg



what if we look at the VE against different age groups?

Per ACIP’s meeting slides, it would be good to look at VE among <8 months and 8-12 months. Should we classify age using age when being tested or age when nirsevimab became available (chose this).

convert VE under 8m to forest plot


Sample size, power or minimum detectable odds ratio for an unmatched or matched case-control study (using epi.sscc() function)

MA RSV infection

library(epiR)

# for medically attended RSV infection
epi.sscc(N = 3090, # total number of subjects included
         OR = NA,  # expected study odds ratio
         p1 = 0.031,  # the prevalence of exposure amongst the cases.
         p0 = 0.128,  # the prevalence of exposure amongst the controls.
         n = 3090,  # the total number of subjects in the study (i.e., the number of cases plus the number of controls). what is the difference from N??
         power = 0.8, # the required study power. ( Ideally, minimum power of a study required is 80%.)
         r = 3.54,  # number in the control group divided by number in the case group. In our study: 2410/680
         sided.test = 2, # use a one- or two-sided test
         nfractional = FALSE, # whether to return fractional sample size
         conf.level = 0.95, 
         method = "unmatched")
## $n.total
## [1] 3090
## 
## $n.case
## [1] 681
## 
## $n.control
## [1] 2409
## 
## $power
## [1] 0.8
## 
## $OR
## [1] 0.6621704 1.3936692
# returning: OR = 0.662: the expected detectable odds ratio given the number of study subjects. 
# VE = 1-OR = 0.338 

RSV outpatient

# for RSV outpatient
epi.sscc(N = 2505, # total number of subjects included
         OR = NA,  # expected study odds ratio
         p1 = 0.031,  # the prevalence of exposure amongst the cases.
         p0 = 0.116,  # the prevalence of exposure amongst the controls.
         n = 2050,  # the total number of subjects in the study (i.e., the number of cases plus the number of controls). what is the difference from N??
         power = 0.8, # the required study power. ( Ideally, minimum power of a study required is 80%.)
         r = 3.87,  # number in the control group divided by number in the case group. here: 
         sided.test = 2, # use a one- or two-sided test
         nfractional = FALSE, # whether to return fractional sample size
         conf.level = 0.95, 
         method = "unmatched")
## $n.total
## [1] 2050
## 
## $n.case
## [1] 421
## 
## $n.control
## [1] 1629
## 
## $power
## [1] 0.8
## 
## $OR
## [1] 0.5629488 1.5267781
# returning: OR = 0.5629488: the expected detectable odds ratio given the number of study subjects. 
# VE = 1-OR = 0.4370512

RSV inpatient

# for RSV inpatient
epi.sscc(N = 543, # total number of subjects included
         OR = NA,  # expected study odds ratio
         p1 = 0.0301,  # the prevalence of exposure amongst the cases.
         p0 = 0.1856764,  # the prevalence of exposure amongst the controls.
         n = 2050,  # the total number of subjects in the study (i.e., the number of cases plus the number of controls). what is the difference from N??
         power = 0.8, # the required study power. ( Ideally, minimum power of a study required is 80%.)
         r = 2.27,  # number in the control group divided by number in the case group. here: 
         sided.test = 2, # use a one- or two-sided test
         nfractional = FALSE, # whether to return fractional sample size
         conf.level = 0.95, 
         method = "unmatched")
## $n.total
## [1] 2050
## 
## $n.case
## [1] 627
## 
## $n.control
## [1] 1423
## 
## $power
## [1] 0.8
## 
## $OR
## [1] 0.6856783 1.3819886
# returning: OR = 0.6856783: the expected detectable odds ratio given the number of study subjects. 
# VE = 1-OR = 0.3143217

RSV severe outcomess

# for severe outcomes
epi.sscc(N = 435, # total number of subjects included
         OR = NA,  # expected study odds ratio
         p1 = 0.02758621,  # the prevalence of exposure amongst the cases.
         p0 = 0.2689655,  # the prevalence of exposure amongst the controls.
         n = 435,  # the total number of subjects in the study (i.e., the number of cases plus the number of controls). what is the difference from N??
         power = 0.8, # the required study power. ( Ideally, minimum power of a study required is 80%.)
         r = 2,  # number in the control group divided by number in the case group. here: 
         sided.test = 2, # use a one- or two-sided test
         nfractional = FALSE, # whether to return fractional sample size
         conf.level = 0.95, 
         method = "unmatched")
## $n.total
## [1] 435
## 
## $n.case
## [1] 145
## 
## $n.control
## [1] 290
## 
## $power
## [1] 0.8
## 
## $OR
## [1] 0.4767214 1.8202937
# returning: OR = 0.4767214, the expected detectable odds ratio given the number of study subjects. 
# VE = 1-OR = 0.5232786